package Day010_排序算法_异常.demo04_异常的产生和处理;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class demo3_捕获处理异常 {
    public static void main(String[] args) {

        /*
            使用声明处理异常后,程序出现异常,程序无法向下执行
            对异常进行捕获处理:

                        try{
                          编写可能会出现异常的代码
                        }catch(异常类型  变量名){
                          处理异常的代码
                          //记录日志/打印异常信息/继续抛出异常
                        }

            执行步骤:
                    1.首先执行try中的代码,如果出现异常,那么直接执行catch中的代码,执行完后,程序继续向下执行
                    2.如果没有出现异常,那么直接跳过catch中的代码,程序继续向下执行

            获取异常信息
                Throwable类中定义了一些查看方法:
                    - public String getMessage():获取异常的描述信息,原因(提示给用户的时候,就提示错误原因。
                    - public String toString():获取异常的类型和异常描述信息(不用)。
                    - public void printStackTrace():打印异常的跟踪栈信息并输出到控制台。

         */

        try{
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = new Date();
            //date = sdf.parse("1999-01-11"); //编译异常,声明/捕获处理异常后编译无异常,无异常的情况下,不会打印"出现异常..."

            date = sdf.parse("1999年01月11日"); //出现异常,try中出现异常位置后的代码不会执行

            System.out.println(date);
        } catch(ParseException e){  // 不知道的可以写 Throwable/Exception 是所有异常的父类
            //处理异常的代码,或打印异常的信息
            System.out.println("出现异常");
            //return; 退出方法,不会继续执行

            //System.out.println("出现了异常");
            //System.out.println(e.getMessage());
            //System.out.println(e.toString());
            e.printStackTrace();
        }
        System.out.println("结束了"); //出现异常仍然会向下执行
    }
}
